using System;
using System.Runtime.Serialization;
namespace Net35.Crm.Sdk.Messages
{
	[DataContract(Namespace = "http://schemas.microsoft.com/crm/2011/Contracts")]
	public sealed class AppointmentRequest : IExtensibleDataObject
	{
		private ExtensionDataObject _extensionDataObject;
		[DataMember]
		public Guid ServiceId
		{
			get;
			set;
		}
		[DataMember]
		public int AnchorOffset
		{
			get;
			set;
		}
		[DataMember]
		public int UserTimeZoneCode
		{
			get;
			set;
		}
		[DataMember]
		public int RecurrenceDuration
		{
			get;
			set;
		}
		[DataMember]
		public int RecurrenceTimeZoneCode
		{
			get;
			set;
		}
		[DataMember]
		public AppointmentsToIgnore[] AppointmentsToIgnore
		{
			get;
			set;
		}
		[DataMember]
		public RequiredResource[] RequiredResources
		{
			get;
			set;
		}
		[DataMember]
		public DateTime? SearchWindowStart
		{
			get;
			set;
		}
		[DataMember]
		public DateTime? SearchWindowEnd
		{
			get;
			set;
		}
		[DataMember]
		public DateTime? SearchRecurrenceStart
		{
			get;
			set;
		}
		[DataMember]
		public string SearchRecurrenceRule
		{
			get;
			set;
		}
		[DataMember]
		public int Duration
		{
			get;
			set;
		}
		[DataMember]
		public ConstraintRelation[] Constraints
		{
			get;
			set;
		}
		[DataMember]
		public ObjectiveRelation[] Objectives
		{
			get;
			set;
		}
		[DataMember]
		public SearchDirection Direction
		{
			get;
			set;
		}
		[DataMember]
		public int NumberOfResults
		{
			get;
			set;
		}
		[DataMember]
		public Guid[] Sites
		{
			get;
			set;
		}
		public ExtensionDataObject ExtensionData
		{
			get
			{
				return this._extensionDataObject;
			}
			set
			{
				this._extensionDataObject = value;
			}
		}
		public AppointmentRequest()
		{
			this.SearchWindowStart = new DateTime?(new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc));
			this.SearchWindowEnd = new DateTime?(new DateTime(9999, 12, 30, 23, 59, 59, DateTimeKind.Utc));
			this.AppointmentsToIgnore = new AppointmentsToIgnore[0];
			this.RequiredResources = new RequiredResource[0];
			this.Constraints = new ConstraintRelation[0];
			this.Objectives = new ObjectiveRelation[0];
			this.Sites = new Guid[0];
		}
	}
}
